/* deque:双端队列容器
 * 底层数据结构：动态开辟的二维数组，一维数组从2开始，以2倍的方式进行扩容，
 * 每次扩容后，原来第二维的数组，从新的第一维数组的下标oldsize/2开始存放，上下都预留相同的空行，方便支持deque的首尾元素添加。
 *
 * deque<int> deq;
 * 增加：
 * deq.push_back(20);   从末尾添加元素  O(1)
 * deq.push_front(20);  从首部添加元素  O(1)   // vec.insert(vec.begin(),20);  O(n)
 * deq.insert(it,20);   插入元素    O(n)
 *
 * 删除元素：
 * deq.pop_back();  尾部删除    O(1)
 * deq.pop_front(); 首部删除    O(1)
 * deq.erase(it);   从it指向的位置删除元素    O(n)
 *
 * 查询搜索：
 * 使用iterator：连续的insert和erase一定要考虑迭代器失效的问题
 * */
